Tegra: bpmp: Increase timeout to 2ms
authorPeter De Schrijver <[email protected]>
Thu, 15 Jun 2017 02:21:50 +0000 (05:21 +0300)
committerVarun Wadekar <[email protected]>
Fri, 18 Jan 2019 17:21:51 +0000 (09:21 -0800)
To deal with upcoming EMC periodic compensation, increase the BPMP timeout
to 2ms.

Change-Id: I8572c031168defd15504d905c4d625f44dd7fa3d
Signed-off-by: Peter De Schrijver <[email protected]>
plat/nvidia/tegra/common/drivers/bpmp/bpmp.c

index 8b3e64220b065a9c3fb64cdd9413af5342f7f94d..1867511cb51251ac6602bef2089d6970aaf76a6a 100644 (file)
@@ -16,7 +16,7 @@
 #include <string.h>
 #include <tegra_def.h>
 
-#define BPMP_TIMEOUT_10US      10
+#define BPMP_TIMEOUT   2
 
 static uint32_t channel_base[NR_CHANNELS];
 static uint32_t bpmp_init_state = BPMP_INIT_PENDING;
@@ -58,15 +58,15 @@ int32_t tegra_bpmp_send_receive_atomic(int mrq, const void *ob_data, int ob_sz,
        if (bpmp_init_state == BPMP_INIT_COMPLETE) {
 
                /* loop until BPMP is free */
-               for (timeout = 0; timeout < BPMP_TIMEOUT_10US; timeout++) {
+               for (timeout = 0; timeout < BPMP_TIMEOUT; timeout++) {
                        if (master_free(ch) == true) {
                                break;
                        }
 
-                       udelay(1);
+                       mdelay(1);
                }
 
-               if (timeout != BPMP_TIMEOUT_10US) {
+               if (timeout != BPMP_TIMEOUT) {
 
                        /* generate the command struct */
                        p->code = mrq;
@@ -79,15 +79,15 @@ int32_t tegra_bpmp_send_receive_atomic(int mrq, const void *ob_data, int ob_sz,
                                      (1U << INT_SHR_SEM_OUTBOX_FULL));
 
                        /* loop until the command is executed */
-                       for (timeout = 0; timeout < BPMP_TIMEOUT_10US; timeout++) {
+                       for (timeout = 0; timeout < BPMP_TIMEOUT; timeout++) {
                                if (master_acked(ch) == true) {
                                        break;
                                }
 
-                               udelay(1);
+                               mdelay(1);
                        }
 
-                       if (timeout != BPMP_TIMEOUT_10US) {
+                       if (timeout != BPMP_TIMEOUT) {
 
                                /* get the command response */
                                (void)memcpy(ib_data, (const void *)p->data,
@@ -106,8 +106,8 @@ int32_t tegra_bpmp_send_receive_atomic(int mrq, const void *ob_data, int ob_sz,
                ret = -EINVAL;
        }
 
-       if (timeout == BPMP_TIMEOUT_10US) {
-               ERROR("Timed out waiting for bpmp's response");
+       if (timeout == BPMP_TIMEOUT) {
+               ERROR("Timed out waiting for bpmp's response\n");
        }
 
        return ret;